package personal.leil.learning.disjoint;

/**
 * Created by Leil on 21.1.24
 */
public class DisjointSetExample {

    public static void main(String[] args) {
        // 创建并查集对象，假设有5个元素
        int size = 5;
        DisjointSet disjointSet = new DisjointSet(size);

        // 查找操作
        System.out.println("Find(2): " + disjointSet.find(2)); // 初始时，每个元素的父节点是自身

        // 合并操作
        disjointSet.union(1, 2);
        System.out.println("Find(1): " + disjointSet.find(1)); // 查找时进行了路径压缩，返回的是根节点
        System.out.println("Find(2): " + disjointSet.find(2)); // 查找时进行了路径压缩，返回的是根节点

        disjointSet.union(3, 4);
        System.out.println("Find(3): " + disjointSet.find(3)); // 查找时进行了路径压缩，返回的是根节点
        System.out.println("Find(4): " + disjointSet.find(4)); // 查找时进行了路径压缩，返回的是根节点

        // 合并不同集合
        disjointSet.union(2, 4);

        // 查找操作
        System.out.println("Find(1): " + disjointSet.find(1)); // 查找时进行了路径压缩，返回的是根节点
        System.out.println("Find(2): " + disjointSet.find(2)); // 查找时进行了路径压缩，返回的是根节点
        System.out.println("Find(3): " + disjointSet.find(3)); // 查找时进行了路径压缩，返回的是根节点
        System.out.println("Find(4): " + disjointSet.find(4)); // 查找时进行了路径压缩，返回的是根节点
    }
}

